RAIS  3.2
C:/Projekte/RAIS/dataaccesslayertest/LocalizationTest.cs
Go to the documentation of this file.
00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004 using NUnit.Framework;
00005 using RAIS.Common.Localization;
00006 using RAIS.DataAccessLayer;
00007 using Cultures = System.Collections.Generic.Dictionary<string, RAIS.Common.Localization.Culture>;
00008 using Contexts = System.Collections.Generic.Dictionary<string, RAIS.Common.Localization.Context>;
00009 using TranslationItems = System.Collections.Generic.Dictionary<string, RAIS.Common.Localization.TranslationItem>;
00010 
00011 namespace RAIS.DataAccessLayerTest
00012 {
00013         [TestFixture]
00014         public class LocalizationTest
00015         {
00016                 #region Properties
00017                 [Test]
00018                 public void Cultures()
00019                 {
00020                         // Clear DB
00021                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00022 
00023                         // Preparations
00024                         int expectedCount = 3;
00025                         bool returnStatus;
00026                         string errorMessage = "";
00027 
00028                         Culture[] expectedCultures = new Culture[expectedCount];
00029                         for (int i = 1; i <= expectedCount; i++)
00030                         {
00031                                 expectedCultures[i - 1] = new Culture(i);
00032                                 returnStatus = Localisation.AddCulture(expectedCultures[i - 1], ref errorMessage);
00033                                 if (!returnStatus)
00034                                         throw new Exception("Add culture error");
00035                         }
00036 
00037                         // Test
00038                         Cultures checkCultures = Localisation.SupportedLanguages;
00039 
00040                         // Checks
00041                         for (int i = 1; i <= expectedCount; i++)
00042                                 Assert.AreEqual(expectedCultures[i - 1].EnglishName, checkCultures[expectedCultures[i - 1].Name].EnglishName);
00043 
00044                         // Restore to previous state
00045                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00046                 }
00047                 [Test]
00048                 public void Contexts()
00049                 {
00050                         // Clear DB
00051                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00052                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00053                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00054 
00055                         // Preparations
00056                         string[] expectedContexts = { "Context 1", "Context 2", "Context 3" };
00057                         int expectedCount = expectedContexts.Length;
00058                         Culture sourceCulture = TestUtilities.NewTestCultureWithSave(1);
00059                         Culture targetCulture = TestUtilities.NewTestCultureWithSave(2);
00060 
00061                         for (int i = 0; i < expectedCount; i++)
00062                                 // usp_GetTranslation stored procedure adds new culture and row in Translation table
00063                                 // if it does not find the translation and return empty recordset. 
00064                                 // Translate method throw an exception "... can not be translated" in this case
00065                                 // We need to add new cultures in this test, so, ignore the exception
00066                                 try
00067                                 {
00068                                         Localisation.Translate(expectedContexts[i], "Add", sourceCulture.Name, targetCulture.Name);
00069                                 }
00070                                 catch 
00071                                 { 
00072                                 }
00073 
00074                         // Test
00075                         Contexts checkContexts = Localisation.Contexts;
00076 
00077                         // Checks
00078                         for (int i = 0; i < expectedCount; i++)
00079                                 Assert.AreEqual(expectedContexts[i], checkContexts[expectedContexts[i]].Name);
00080 
00081                         // Restore to previous state
00082                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00083                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00084                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00085                 }
00086                 #endregion
00087 
00088                 #region Methods
00089                 [Test]
00090                 public void Translate()
00091                 {
00092                         /*// Clear DB
00093                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00094                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00095                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00096 
00097                         // Preparations
00098                         string errorMessage = "";
00099                         string expectedContext = "Context 1";
00100                         Culture sourceLanguage = Localisation.SupportedLanguages["English"];
00101                         Culture targetLanguage = TestUtilities.NewTestCultureWithSave(1);
00102                         string testTranslation = "Test Translation";
00103                         string expectedTranslationResult = "Expected Translation Result";
00104                         //Add new culture
00105                         try
00106                         {
00107                                 Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name);
00108 
00109                         }
00110                         catch
00111                         {
00112                         }
00113                         Context culture = Localisation.Contexts[expectedContext];
00114                         TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceLanguage, targetLanguage, true);
00115                         translationItems[expectedContext + " " + testTranslation].TargetText = expectedTranslationResult;
00116                         Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error");
00117 
00118                         // Test
00119                         string checkTranslation = Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name);
00120 
00121                         // Check
00122                         Assert.AreEqual(expectedTranslationResult, checkTranslation);
00123 
00124                         // Restore to previous state
00125                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00126                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00127                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/
00128                 }
00129                 [Test]
00130                 public void AddCulture()
00131                 {
00132                         // Clear DB
00133                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00134 
00135                         // Preparations
00136                         int expectedLCID = 1;
00137                         bool returnStatus;
00138                         string errorMessage = "";
00139 
00140                         Culture expectedCulture = new Culture(expectedLCID);
00141 
00142                         // Test
00143                         returnStatus = Localisation.AddCulture(expectedCulture, ref errorMessage);
00144 
00145                         // Checks
00146                         Assert.IsTrue(returnStatus, "AddCulture return status:");
00147 
00148                         Culture checkCulture = Localisation.SupportedLanguages[expectedCulture.Name];
00149 
00150                         Assert.AreEqual(expectedCulture.ID, checkCulture.ID);
00151                         Assert.AreEqual(expectedCulture.Name, checkCulture.Name);
00152                         Assert.AreEqual(expectedCulture.LCID, checkCulture.LCID);
00153                         Assert.AreEqual(expectedCulture.EnglishName, checkCulture.EnglishName);
00154                         Assert.AreEqual(expectedCulture.RightToLeft, checkCulture.RightToLeft);
00155 
00156                         // Restore to previous state
00157                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00158                 }
00159                 [Test]
00160                 public void SaveCulture()
00161                 {
00162                         // Clear DB
00163                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00164 
00165                         // Preparations
00166                         int expectedLCID = 1;
00167                         bool returnStatus;
00168                         string errorMessage = "";
00169 
00170                         Culture expectedCulture = new Culture(expectedLCID);
00171                         returnStatus = Localisation.AddCulture(expectedCulture, ref errorMessage);
00172                         if (!returnStatus)
00173                                 throw new Exception("Add culture error");
00174 
00175                         expectedCulture.RightToLeft = true;
00176 
00177                         // Test
00178                         returnStatus = Localisation.SaveCulture(expectedCulture, ref errorMessage);
00179 
00180                         // Checks
00181                         Assert.IsTrue(returnStatus, "AddCulture return status:");
00182 
00183                         Culture checkCulture = Localisation.SupportedLanguages[expectedCulture.Name];
00184 
00185                         Assert.AreEqual(expectedCulture.RightToLeft, checkCulture.RightToLeft);
00186 
00187                         // Restore to previous state
00188                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00189                 }
00190                 [Test]
00191                 [ExpectedException(typeof(System.Collections.Generic.KeyNotFoundException))]
00192                 public void DeleteCulture()
00193                 {
00194                         // Clear DB
00195                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00196 
00197                         // Preparations
00198                         int expectedLCID = 1;
00199                         bool returnStatus;
00200                         string errorMessage = "";
00201 
00202                         Culture expectedCulture = new Culture(expectedLCID);
00203                         returnStatus = Localisation.AddCulture(expectedCulture, ref errorMessage);
00204                         if (!returnStatus)
00205                                 throw new Exception("Add culture error");
00206 
00207                         // Test
00208                         returnStatus = Localisation.DeleteCulture(expectedCulture, ref errorMessage);
00209 
00210                         // Checks
00211                         Assert.IsTrue(returnStatus, "DeleteCulture return status:");
00212 
00213                         // Check that expectedCulture does not exist in SupportedLanguages dictionary
00214                         // Expected exception System.Collections.Generic.KeyNotFoundException
00215                         Culture checkCulture = Localisation.SupportedLanguages[expectedCulture.Name];
00216 
00217                         // Restore to previous state
00218                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00219                 }
00220                 [Test]
00221                 public void GetAllTranslations_WithTranslated()
00222                 {
00223                         /*// Clear DB
00224                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00225                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00226                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00227 
00228                         // Preparations
00229                         string errorMessage = "";
00230                         string[] expectedContexts = { "Context 1", "Context 2", "Context 3" };
00231                         string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" };
00232                         int expectedCount = expectedContexts.Length;
00233                         Culture sourceCulture = Localisation.SupportedLanguages["English"];
00234                         Culture targetCulture = TestUtilities.NewTestCultureWithSave(2);
00235                         string expectedTranslationResult = "Expected Translation Result";
00236 
00237                         for (int i = 0; i < expectedCount; i++)
00238                                 // usp_GetTranslation stored procedure adds new culture and row in Translation table
00239                                 // if it does not find the translation and return empty recordset. 
00240                                 // Translate method throw an exception "... can not be translated" in this case
00241                                 // We need to add new cultures in this test, so, ignore the exception
00242                                 try
00243                                 {
00244                                         Localisation.Translate(expectedContexts[i], expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name);
00245                                 }
00246                                 catch
00247                                 {
00248                                 }
00249                         Context culture = Localisation.Contexts[expectedContexts[1]];
00250                         TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, true);
00251                         translationItems[expectedContexts[1] + " " + expectedTextToTranslate[1]].TargetText = expectedTranslationResult;
00252                         Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error");
00253 
00254                         // Test
00255                         TranslationItems checkTranslationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, false);
00256 
00257                         // Checks
00258                         Assert.AreEqual(expectedCount, checkTranslationItems.Count);
00259 
00260                         for (int i = 0; i < expectedCount; i++)
00261                                 Assert.AreEqual(expectedTextToTranslate[i]
00262                                         , checkTranslationItems[expectedContexts[i] + " " + expectedTextToTranslate[i]].SourceText);
00263 
00264                         // Restore to previous state
00265                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00266                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00267                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/
00268                 }
00269                 [Test]
00270                 public void GetAllTranslations_UntranslatedOnly()
00271                 {
00272                         /*// Clear DB
00273                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00274                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00275                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00276 
00277                         // Preparations
00278                         string errorMessage = "";
00279                         string[] expectedContexts = { "Context 1", "Context 2", "Context 3" };
00280                         string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" };
00281                         int allTranslationsCount = expectedContexts.Length;
00282                         int expectedCount = allTranslationsCount - 1;
00283                         Culture sourceCulture = Localisation.SupportedLanguages["English"];
00284                         Culture targetCulture = TestUtilities.NewTestCultureWithSave(2);
00285                         string expectedTranslationResult = "Expected Translation Result";
00286 
00287                         for (int i = 0; i < allTranslationsCount; i++)
00288                                 // usp_GetTranslation stored procedure adds new culture and row in Translation table
00289                                 // if it does not find the translation and return empty recordset. 
00290                                 // Translate method throw an exception "... can not be translated" in this case
00291                                 // We need to add new cultures in this test, so, ignore the exception
00292                                 try
00293                                 {
00294                                         Localisation.Translate(expectedContexts[i], expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name);
00295                                 }
00296                                 catch
00297                                 {
00298                                 }
00299                         Context culture = Localisation.Contexts[expectedContexts[0]];
00300                         TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, true);
00301                         translationItems[expectedContexts[0] + " " + expectedTextToTranslate[0]].TargetText = expectedTranslationResult;
00302                         Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error");
00303 
00304                         // Test
00305                         TranslationItems checkTranslationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, true);
00306 
00307                         // Checks
00308                         Assert.AreEqual(expectedCount, checkTranslationItems.Count);
00309 
00310                         for (int i = 1; i < allTranslationsCount; i++)
00311                                 Assert.AreEqual(expectedTextToTranslate[i]
00312                                         , checkTranslationItems[expectedContexts[i] + " " + expectedTextToTranslate[i]].SourceText);
00313 
00314                         // Restore to previous state
00315                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00316                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00317                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/
00318                 }
00319                 [Test]
00320                 public void GetTranslationsByContext_WithTranslated()
00321                 {
00322                         /*// Clear DB
00323                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00324                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00325                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00326 
00327                         // Preparations
00328                         string errorMessage = "";
00329                         string expectedContext = "Context";
00330                         string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" };
00331                         int allTranslationsCount = expectedTextToTranslate.Length;
00332                         int expectedCount = allTranslationsCount;
00333                         Culture sourceCulture = Localisation.SupportedLanguages["English"];
00334                         Culture targetCulture = TestUtilities.NewTestCultureWithSave(2);
00335                         string expectedTranslationResult = "Expected Translation Result";
00336 
00337                         for (int i = 0; i < allTranslationsCount; i++)
00338                                 // usp_GetTranslation stored procedure adds new culture and row in Translation table
00339                                 // if it does not find the translation and return empty recordset. 
00340                                 // Translate method throw an exception "... can not be translated" in this case
00341                                 // We need to add new cultures in this test, so, ignore the exception
00342                                 try
00343                                 {
00344                                         Localisation.Translate(expectedContext, expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name);
00345                                 }
00346                                 catch
00347                                 {
00348                                 }
00349                         Context culture = Localisation.Contexts[expectedContext];
00350                         TranslationItems translationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, true);
00351                         translationItems[expectedContext + " " + expectedTextToTranslate[0]].TargetText = expectedTranslationResult;
00352                         Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error");
00353 
00354                         // Test
00355                         TranslationItems checkTranslationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, false);
00356 
00357                         // Checks
00358                         Assert.AreEqual(expectedCount, checkTranslationItems.Count);
00359 
00360                         for (int i = 1; i < allTranslationsCount; i++)
00361                                 Assert.AreEqual(expectedTextToTranslate[i]
00362                                         , checkTranslationItems[expectedContext + " " + expectedTextToTranslate[i]].SourceText);
00363 
00364                         // Restore to previous state
00365                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00366                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00367                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/
00368                 }
00369                 /*[Test]
00370                 public void GetTranslationsByContext_UntranslatedOnly()
00371                 {
00372                         // Clear DB
00373                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00374                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00375                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00376 
00377                         // Preparations
00378                         string errorMessage = "";
00379                         string expectedContext = "Context";
00380                         string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" };
00381                         int allTranslationsCount = expectedTextToTranslate.Length;
00382                         int expectedCount = allTranslationsCount - 1;
00383                         Culture sourceCulture = Localisation.SupportedLanguages["English"];
00384                         Culture targetCulture = TestUtilities.NewTestCultureWithSave(2);
00385                         string expectedTranslationResult = "Expected Translation Result";
00386 
00387                         for (int i = 0; i < allTranslationsCount; i++)
00388                                 // usp_GetTranslation stored procedure adds new culture and row in Translation table
00389                                 // if it does not find the translation and return empty recordset. 
00390                                 // Translate method throw an exception "... can not be translated" in this case
00391                                 // We need to add new cultures in this test, so, ignore the exception
00392                                 try
00393                                 {
00394                                         Localisation.Translate(expectedContext, expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name);
00395                                 }
00396                                 catch
00397                                 {
00398                                 }
00399                         Context culture = Localisation.Contexts[expectedContext];
00400                         TranslationItems translationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, true);
00401                         translationItems[expectedContext + " " + expectedTextToTranslate[0]].TargetText = expectedTranslationResult;
00402                         Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error");
00403 
00404                         // Test
00405                         TranslationItems checkTranslationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, true);
00406 
00407                         // Checks
00408                         Assert.AreEqual(expectedCount, checkTranslationItems.Count);
00409 
00410                         for (int i = 1; i < allTranslationsCount; i++)
00411                                 Assert.AreEqual(expectedTextToTranslate[i]
00412                                         , checkTranslationItems[expectedContext + " " + expectedTextToTranslate[i]].SourceText);
00413 
00414                         // Restore to previous state
00415                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00416                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00417                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00418                 }
00419                 [Test]
00420                 public void SaveTranslations()
00421                 {
00422                         // Clear DB
00423                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error");
00424                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error");
00425                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error");
00426 
00427                         // Preparations
00428                         bool returnStatus;
00429                         string errorMessage = "";
00430                         string expectedContext = "Context 1";
00431                         Culture sourceLanguage = Localisation.SupportedLanguages["English"];
00432                         Culture targetLanguage = TestUtilities.NewTestCultureWithSave(1);
00433                         string testTranslation = "Test Translation";
00434                         string expectedTranslationResult = "Expected Translation Result";
00435                         //Add new culture
00436                         try
00437                         {
00438                                 Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name);
00439 
00440                         }
00441                         catch
00442                         {
00443                         }
00444                         Context culture = Localisation.Contexts[expectedContext];
00445                         TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceLanguage, targetLanguage, true);
00446                         translationItems[expectedContext + " " + testTranslation].TargetText = expectedTranslationResult;
00447 
00448                         // Test
00449                         returnStatus = Localisation.SaveTranslations(translationItems, ref errorMessage);
00450 
00451                         // Check
00452                         Assert.IsTrue(returnStatus, "Save translation error");
00453 
00454                         string checkTranslation = Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name);
00455                         Assert.AreEqual(expectedTranslationResult, checkTranslation);
00456 
00457                         // Restore to previous state
00458                         Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error");
00459                         Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error");
00460                         Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");
00461                 }*/
00462                 #endregion
00463         }
00464 }